package Day_0131.JVM;

/**
 * @author zxc
 * @date 2023/01/31 21:37
 **/
public class JVM_major_component {
    public static void main(String[] args) {
        /**
         * JVM的主要组成部分及其作用
         * ===》
         * JVM包含两个子系统和两个组件 ：
         * 1.Class loader(类装载子系统) ：
         * 「Class loader(类装载)：」
         *  根据给定的全限定类名来装载class文件到运行时数据区的方法区中。
         *
         * 2.Execution engine(执行引擎子系统) ：
         * 「Execution engine（执行引擎）」：
         *  执行class的指令。
         *
         * 3.Runtime data area(运行时数据区组件) ：
         * 「Runtime data area(运行时数据区域)」：
         *  即，JVM内存。
         *
         *
         * 4.Native Interface(本地接口组件)。
         * 「Native Interface(本地接口)：」
         *  与native lib交互，是其它编程语言交互的接口。
         *
         *
         *  在JVM上运行Java程序的过程 ：
         * （1）首先通过编译器把 Java源代码转换成字节码;
         * （2）Class loader(类装载)再把字节码加载到JVM内存中(运行时数据区的方法区内);
         *  而字节码文件只是 JVM 的一套指令集规范，并不能直接交给底层操作系统去执行;
         * （3）需要特定的命令解析器执行引擎（Execution Engine），将字节码翻译成底层系统指令，再交由 CPU 去执行;
         * （4）而这个过程中需要调用其他语言的本地库接口（Native Interface）来实现整个程序的功能;
         *
         */
    }
}
